Different Ways to Add Parentheses
Question
Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +, - and *.
Example 1
Input: "2-1-1".
|
|
Output: [0, 2]
Example 2
Input: "2*3-4*5"
|
|
Output: [-34, -14, -10, -10, 10]
Analysis
从字符串头开始遍历,遇到符号将字符串划分为左右两部分part1和part2,对他们递归调用该函数,得到左右部分的结果集合list,利用双重循环对结果进行组合计算。
注意:
在最终得到res的大小为0的时候,代表该字符串不存在符号,直接返回input字符串的数值即可。
Code
|
|
Merge k Sorted Lists
Question
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Analysis
重新定义PriorityQueue的comparator方法,Priority Queue 使用方法如下:
- 插入方法(offer()、poll()、remove() 、add() 方法)时间复杂度为O(log(n))
- remove(Object) 和 contains(Object) 时间复杂度为O(n)
- 检索方法(peek、element 和 size)时间复杂度为常量。
将所有节点添加到队列后,循环出队加入结果链表,当加入节点next不为空的时候,将该next节点再次加入队列中
Code
|
|